package com.origin.niuke.simulation;

import java.util.HashSet;
import java.util.Set;

/**
 * @author yzh
 * @version 1.0
 * @date 2022/4/19 16:30
 * 现在有2副扑克牌，从扑克牌中随机五张扑克牌，我们需要来判断一下是不是顺子。
 * 有如下规则：
 * 1. A为1，J为11，Q为12，K为13，A不能视为14
 * 2. 大、小王为 0，0可以看作任意牌
 * 3. 如果给出的五张牌能组成顺子（即这五张牌是连续的）就输出true，否则就输出false。
 * 4.数据保证每组5个数字，每组最多含有4个零，数组的数取值为 [0, 13]
 * 算法：模拟
 * 1、当有两个及以上相同的数字出现时，返回 false
 * 2、如果最大和最小的数字相减 + 1 大于 5，返回 false
 * 3、小于等于 5，肯定是 true
 * 使用 set 来存储 num，防止重复出现
 */
public class 扑克牌顺子 {
    public static void main(String[] args) {
        int x = 20, y = 35;
        x = y++ + x++;
        y = ++y + ++x;
        System.out.println(x);
        System.out.println(y);
    }

    public boolean IsContinuous(int[] nums) {
        // 因为最大的扑克是 13
        int max = 0, min = 14;
        Set<Integer> set = new HashSet<>();
        for (int num : nums) {
            if (num == 0) continue;
            if (set.contains(num)) return false;
            set.add(num);
            max = Math.max(max, num);
            min = Math.min(min, num);
        }
        // 这里必须小于 5，不能写成 max - min + 1 <= 5, 不然这个用例过不去 [3,0,0,0,0]
        return max - min < 5;
    }

}
